package logic

import (
	"github.com/gin-gonic/gin"
	"github.com/vueadmin/app/admin/internal/dto"
	"github.com/vueadmin/app/admin/internal/model"
	"github.com/vueadmin/app/admin/internal/service"
	"github.com/vueadmin/app/admin/internal/svc"
	"github.com/vueadmin/app/admin/internal/vo"
	"github.com/vueadmin/utils/conv"
)

type membeLogic struct{
	ctx    *gin.Context
	svcCtx *svc.ServiceContext
}

func NewMembeLogic(ctx *gin.Context, svcCtx *svc.ServiceContext) *membeLogic {
	return &membeLogic{
		ctx: ctx,
		svcCtx: svcCtx,
	}
}

/**
 * @description(数据列表)
 * @buildcode(true)
*/
func (p membeLogic) GetPageList(req *dto.MembePageReq) ([]*vo.MembeList, int64, error) {
	s := service.NewMembeService(p.svcCtx)
	return s.GetPageList(req)
}

/**
 * @description(修改排序开关)
 * @buildcode(true)
*/
func (p membeLogic) UpdateExt(req map[string]interface{}) error {
	s := service.NewMembeService(p.svcCtx)
	return s.UpdateExt(req)
}

/**
 * @description(添加)
 * @buildcode(true)
*/
func (p membeLogic) Add(req *dto.MembeAddReq) (int, error) {
	s := service.NewMembeService(p.svcCtx)
	return s.Add(req)
}

/**
 * @description(修改)
 * @buildcode(true)
*/
func (p membeLogic) Update(req *dto.MembeUpdateReq) error {
	p.svcCtx.Log.Info("会员管理-修改:", conv.String(req))
	s := service.NewMembeService(p.svcCtx)
	return s.Update(req)
}

/**
 * @description(获取修改详情)
 * @buildcode(true)
*/
func (p membeLogic) GetUpdateInfo(req *dto.MembeGetUpdateInfoReq) (*model.Membe, error) {
	s := service.NewMembeService(p.svcCtx)
	return s.GetUpdateInfo(req)
}

/**
 * @description(删除)
 * @buildcode(true)
*/
func (p membeLogic) Delete(req *dto.MembeDeleteReq) error {
	p.svcCtx.Log.Info("会员管理-删除:", conv.String(req))
	s := service.NewMembeService(p.svcCtx)
	return s.Delete(req)
}

/**
 * @description(查看详情)
 * @buildcode(true)
*/
func (p membeLogic) Detail(req *dto.MembeDetailReq) (*vo.MembeDetail, error) {
	s := service.NewMembeService(p.svcCtx)
	return s.Detail(req)
}

/**
 * @description(重置密码)
 * @buildcode(true)
*/
func (p membeLogic) ResetPwd(req *dto.MembeResetPwdReq) error {
	p.svcCtx.Log.Info("会员管理-重置密码:", conv.String(req))
	s := service.NewMembeService(p.svcCtx)
	return s.ResetPwd(req)
}

/**
 * @description(导入)
 * @buildcode(true)
*/
func (p membeLogic) Import(req []dto.MembeImportReq) error {
	s := service.NewMembeService(p.svcCtx)
	return s.Import(req)
}

/**
 * @description(客户端导出)
 * @buildcode(true)
*/
func (p membeLogic) Export(req *dto.MembePageReq) ([]*vo.MembeExport,int64, error) {
	s := service.NewMembeService(p.svcCtx)
	return s.Export(req)
}

/**
 * @description(充值)
 * @buildcode(true)
*/
func (p membeLogic) Jia(req *dto.MembeJiaReq) error {
	p.svcCtx.Log.Info("会员管理-充值:", conv.String(req))
	s := service.NewMembeService(p.svcCtx)
	return s.Jia(req)
}

/**
 * @description(扣除)
 * @buildcode(true)
*/
func (p membeLogic) Jian(req *dto.MembeJianReq) error {
	p.svcCtx.Log.Info("会员管理-扣除:", conv.String(req))
	s := service.NewMembeService(p.svcCtx)
	return s.Jian(req)
}

/**
 * @description(状态禁用)
 * @buildcode(true)
*/
func (p membeLogic) Forbidden(req *dto.MembeForbiddenReq) error {
	p.svcCtx.Log.Info("会员管理-状态禁用:", conv.String(req))
	s := service.NewMembeService(p.svcCtx)
	return s.Forbidden(req)
}

/**
 * @description(获取积分汇总)
 * @buildcode(true)
*/
func (p membeLogic) GetAmountSum(req *dto.MembePageReq) float64 {
	s := service.NewMembeService(p.svcCtx)
	return s.GetAmountSum(req)
}

